<template>
	<!-- #ifdef APP-NVUE -->
	<text :style="{ color: color, 'font-size': iconSize }" class="uni-icons" @click="_onClick">{{ unicode }}</text>
	<!-- #endif -->
	<!-- #ifndef APP-NVUE -->
	<text :style="{ color: color, 'font-size': iconSize }" class="uni-icons"
	      :class="['uniui-'+type,customPrefix,customPrefix?type:'']" @click="_onClick"></text>
	<!-- #endif -->
</template>

<script>
import icons from './icons.js';

const getVal = (val) => {
	const reg = /^[0-9]*$/g
	return (typeof val === 'number' || reg.test(val)) ? val + 'px' : val;
}
// #ifdef APP-NVUE
var domModule = weex.requireModule('dom');
import iconUrl from './uniicons.ttf'

domModule.addRule('fontFace', {
	'fontFamily': "uniicons",
	'src': "url('" + iconUrl + "')"
});
// #endif

/**
 * Icons 图标
 * @description 用于展示 icons 图标
 * @tutorial https://ext.dcloud.net.cn/plugin?id=28
 * @property {Number} size 图标大小
 * @property {String} type 图标图案，参考示例
 * @property {String} color 图标颜色
 * @property {String} customPrefix 自定义图标
 * @event {Function} click 点击 Icon 触发事件
 */
export default {
	name: 'UniIcons',
	emits: ['click'],
	props: {
		type: {
			type: String,
			default: ''
		},
		color: {
			type: String,
			default: '#333333'
		},
		size: {
			type: [Number, String],
			default: 16
		},
		customPrefix: {
			type: String,
			default: ''
		}
	},
	data() {
		return {
			icons: icons.glyphs
		}
	},
	computed: {
		unicode() {
			let code = this.icons.find(v => v.font_class === this.type)
			if (code) {
				return unescape(`%u${code.unicode}`)
			}
			return ''
		},
		iconSize() {
			return getVal(this.size)
		}
	},
	methods: {
		_onClick() {
			this.$emit('click')
		}
	}
}
</script>

<style lang="scss">
/* #ifndef APP-NVUE */
@import './uniicons.css';

@font-face {
	font-family: uniicons;
	src: url('./uniicons.ttf') format('truetype');
}

/* #endif */
.uni-icons {
	font-family: uniicons;
	text-decoration: none;
	text-align: center;
}

</style>
